package com.puboot.common.util;

import java.math.BigDecimal;
import java.util.List;

/**
 * 水泥
 * Created by chen on 2021/12/25.
 */
public class CementUtil {

    /**
     * 温室气体排放总量，单位为t
     * @param eBurn 燃料燃烧二氧化碳排放量，单位为t
     * @param eProcess 原料碳酸盐分解产生的二氧化碳排放量，单位为t
     * @param ePurchaseElectric 购入电力对应的二氧化碳排放量，单位为t
     * @param ePurchaseHeat 购入热力对应的二氧化碳排放量，单位为t
     * @param eOutputElectric 输出电力对应二氧化碳排放量，单位为t
     * @param eOutputHeat 输出热力对应二氧化碳排放量，单位为t
     * @return
     */
    public static Double getE(Double eBurn, Double eProcess,
                              Double ePurchaseElectric, Double ePurchaseHeat, Double eOutputElectric,
                              Double eOutputHeat) {
        BigDecimal eOutputElectricB = new BigDecimal(eOutputElectric);
        BigDecimal eOutputHeatB = new BigDecimal(eOutputHeat);
        BigDecimal jsgc1 = GasDCUtil.allAdd(eBurn, eProcess, ePurchaseElectric, ePurchaseHeat);
        BigDecimal jsgc2 = jsgc1.subtract(eOutputElectricB);
        BigDecimal jsgc3 = jsgc2.subtract(eOutputHeatB);
        return jsgc3.doubleValue();
    }

    /**
     * 原料碳酸盐分解产生的二氧化碳排放量，单位为t
     * @param q 生产的水泥熟料产量，单位为t
     * @param fr1 熟料中氧化钙的含量，单位为%
     * @param fr10 熟料中不是来源于碳酸盐分解的氧化钙的含量，单位为%
     * @param fr2 熟料中氧化镁的含量，单位为%
     * @param fr20 熟料中不是来源于碳酸盐分解的氧化镁的含量，单位为%
     * @return
     */
    public static Double getEProcess(Double q, Double fr1, Double fr10, Double fr2, Double fr20){
        BigDecimal cl1B = new BigDecimal(44);
        BigDecimal cl2B = new BigDecimal(56);
        BigDecimal cl3B = new BigDecimal(40);
        BigDecimal qB = new BigDecimal(q);
        BigDecimal fr1B = new BigDecimal(fr1);
        BigDecimal fr10B = new BigDecimal(fr10);
        BigDecimal fr2B = new BigDecimal(fr2);
        BigDecimal fr20B = new BigDecimal(fr20);
        BigDecimal jsgc1 = fr1B.subtract(fr10B);
        BigDecimal jsgc2 = jsgc1.multiply(cl1B).divide(cl2B, 10, BigDecimal.ROUND_HALF_UP);
        BigDecimal jsgc3 = fr2B.subtract(fr20B);
        BigDecimal jsgc4 = jsgc3.multiply(cl1B).divide(cl3B, BigDecimal.ROUND_HALF_UP);
        BigDecimal jsgc5 = jsgc2.add(jsgc4);
        return qB.multiply(jsgc5).doubleValue();
    }

}
